「一行代码」打通软件从搜索、安装、升级到卸载的全流程:Windows 系统缺失的包管理器 WinGet
❝文章首发于我的少数派栏目,[1]原标题为《Windows 系统缺失的包管理器:Chocolatey、WinGet 和 Scoop》[2],并截取了原文的第二部分作为本文的推送内容(稍有修改)。
❞
❝关联阅读:「一行代码」打通软件的安装的所有需求:Windows 系统缺失的包管理器Chocolatey
❞
写在前面
如果你也身处 Windows 系统的生态环境之中,或许你身边也有小伙伴正在遭受这样的烦恼:他们永远搞不懂自己辛辛苦苦在搜索引擎找到并下载安装的软件到底在哪里?他们也不清楚为什么电脑中总会出现形形色色、不明不白的垃圾软件和弹窗?即便电脑已经越来越臃肿,他们也不敢碰除个人文件外的任何东西,生怕系统崩坏、数据丢失;他们没有文件管理习惯,快捷方式是他们认为软件是否安装的唯一标志,甚至认为删除即卸载;他们深知自己电脑的内部文件体系已是一团乱糟糟,所以桌面总是满满当当、密不透风。
搜索、下载、安装,这是几乎任何一个软件在「食用」之前要做的准备工作。每一步都有坑:百度搜索里的「海底捞」,点击下载那一刻的战战兢兢,等待安装时的擦亮双眼、诚惶诚恐。如果算上在使用过程中的升级和使用完之后的卸载,那麻烦就更多了。
上述或许并不夸张,正是你我之前有过或正在经历的困惑。
如果这样,那么本文正是为你量身打造、包管理器也非你莫属。
「包管理器」的一行命令,打通软件从搜索、下载、安装到配置、升级、卸载的全流程。
什么是包管理器
❝包管理器又称「软件包管理系统」,它是在电脑中「自动安装、配置、卸载和升级」软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用。——引自百度百科[3]
❞
如果你用过Python[4] ,那么对 pip 一定不陌生,Python 对所有第三方库的查找、下载、安装、卸载等都可以通过 pip 来完成的。需要哪个库,pip install
帮你安装;不需要了,pip uninstall
一键就能卸载。简单省事、方便快捷。不少编程语言均有各自对应的包管理器,比如 Nodejs 的 npm 等。
其实在操作系统上,包管理器应用就更广泛了,尤其是 Linux 系统和 macOS 系统已经相当成熟了。比如 Ubuntu 的 apt、CentOS 的 yum、 macOS 系统下的 Homebrew 等。Windows 平台的包管理器虽然仍受诟病,但目前来看已经能够完成绝大多数的工作了。
Windows 系统上常见的包管理器主要有 Chocolatey、winget 和 Scoop。
为什么要用包管理器
降低安装维护软件的成本
避免安装大量软件造成的路径污染
避免查找和安装软件的其他依赖项
卸载彻底
仅第一条理由就足以让我拥抱它~~🥂🥂
winget
winget(Windows 程序包管理器:Windows Package Manager)是微软为 win10 开发的一款开源的软件包管理器,于 2020年5月的 Microsoft Build 开发者大会上首宣。
❝前提:「Windows 10」 1709 及以上版本
❞
当前 winget 支持的安装程序类型有:
EXE
MSIX
MSI
下载、安装和验证
你可以在Github Release[5]下载.appxbundle
格式的文件,双击打开并运行。除此之外,👉官方GitHub 主页[6]和👉Microsoft Docs[7]里有 winget 更详细配置信息。
如果出现「此电脑不支持打开该类型文件」的提示,则可在Win + I
进入设置 -> 更新和安全 -> 开发者选项 -> 打开开发人员模式。
输入winget
可以查看简略帮助文档;输入winget -v
查看版本信息
基本使用
显示简略帮助文档:
winget -?
(-?可选);查看特定命令的详细帮助文档:winget [<命令>] -?
,如winget install -?
显示软件详细信息:
winget show <包名>
搜索软件:
winget search <包名>
安装软件:
winget install <包名>
是的,如你所见,winget 并没有自动开启卸载、升级等功能,这也是其在发布之后很长时间不温不火的重要原因。
但是不要着急,截止到2021/03/25发布的最新预览版v0.2.10771
,winget 实验性功能(需要用户自启)的数量已经增加到了八个,其中就包括uninstall
、upgrade
、list
等重要功能,以及支持安装 Microsoft Store 上的应用程序!
如果想要开启实验功能,可以在终端输入winget settiings
,打开 winget 配置文件settings.json
增加以下内容(其他自定义配置可参照winget-cli settings[8]的官方具体说明):
"experimentalFeatures": {
"uninstall": true,
"upgrade": true,
"list": true,
"experimentalMSStore": true
},
如果想要更改 winget 显示的进度条视觉效果,可以在setting.json
里增加:
"visual": {
"progressBar": "accent"
},
# 三种样式可选:accent(默认值)、 retro、 rainbow
下载 Microsoft Store 软件
实验功能开启"experimentalMSStore": true
之后,winget 可以下载 MStore 的软件了(不过现在仅支持300多个)。
winget source list
查看软件源列表,除了winget源之外,发现Msstore 源已经添加上了。部分商店内软件可以正常下载安装了。
卸载其他源安装的软件
winget 可以卸载winget list
显示出的所有软件。包括电脑上的大多数软件,如Windows系统自带的、手动安装的、Chocolatey 安装的部分等。唯一不足的是,卸载时会被弹出的卸载窗口打断,降低了自动化的一致性。
结语
无需访问搜索引擎苦苦寻觅,无需次次配置系统环境变量,无需点击图形界面、一不小心安装个「全家桶」,一行命令、几个单词,就能满足大多数人对日常软件的所有需求。如果用不惯命令行界面,还有GUI界面可选。
除了 Chocolatey 和 Winget,Windows 系统上的包管理器Scoop,我也将持续推送。
猜你喜欢
Reference
少数派栏目,: https://sspai.com/
[2]Windows 系统缺失的包管理器:Chocolatey、WinGet 和 Scoop》: https://sspai.com/post/65933
[3]百度百科: https://baike.baidu.com/item/包管理器/22785432?fr=aladdin
[4]Python: https://baike.baidu.com/item/Python
[5]Github Release: https://github.com/microsoft/winget-cli/releases
[6]GitHub 主页: https://github.com/microsoft/winget-cli
[7]Microsoft Docs: https://docs.microsoft.com/zh-cn/windows/package-manager/winget/
[8]winget-cli settings: https://github.com/microsoft/winget-cli/blob/master/doc/Settings.md